/**
 * 通知设置相关类型定义
 */

/** 通知设置数据 */
export interface NotificationSettings {
  /** 关注通知开关 */
  followEnabled: boolean;
  /** 点赞通知开关 */
  likeEnabled: boolean;
  /** 评论通知开关 */
  commentEnabled: boolean;
  /** 回复通知开关 */
  replyEnabled: boolean;
  /** @提及通知开关 */
  mentionEnabled: boolean;
  /** 系统通知开关 */
  systemEnabled: boolean;
  /** 收藏通知开关 */
  collectEnabled: boolean;
  /** 免打扰模式开关 */
  doNotDisturbEnabled: boolean;
  /** 免打扰开始时间 HH:mm:ss */
  doNotDisturbStart: string;
  /** 免打扰结束时间 HH:mm:ss */
  doNotDisturbEnd: string;
  /** 通知聚合开关 */
  notificationAggregationEnabled: boolean;
  /** WebSocket推送开关 */
  websocketEnabled: boolean;
  /** 邮件通知总开关 */
  emailNotificationEnabled: boolean;
  /** 关注邮件通知 */
  emailFollowEnabled: boolean;
  /** 评论邮件通知 */
  emailCommentEnabled: boolean;
  /** 回复邮件通知 */
  emailReplyEnabled: boolean;
  /** @提及邮件通知 */
  emailMentionEnabled: boolean;
  /** 系统邮件通知 */
  emailSystemEnabled: boolean;
  /** 创建时间 */
  createTime?: string;
  /** 更新时间 */
  updateTime?: string;
}

/** 通知设置更新参数 */
export interface NotificationSettingsUpdateParams {
  /** 关注通知开关 0-关闭 1-开启 */
  followEnabled?: 0 | 1;
  /** 点赞通知开关 */
  likeEnabled?: 0 | 1;
  /** 评论通知开关 */
  commentEnabled?: 0 | 1;
  /** 回复通知开关 */
  replyEnabled?: 0 | 1;
  /** @提及通知开关 */
  mentionEnabled?: 0 | 1;
  /** 系统通知开关 */
  systemEnabled?: 0 | 1;
  /** 收藏通知开关 */
  collectEnabled?: 0 | 1;
  /** 免打扰模式开关 */
  doNotDisturbEnabled?: 0 | 1;
  /** 免打扰开始时间 HH:mm:ss */
  doNotDisturbStart?: string;
  /** 免打扰结束时间 HH:mm:ss */
  doNotDisturbEnd?: string;
  /** 通知聚合开关 */
  notificationAggregationEnabled?: 0 | 1;
  /** WebSocket推送开关 */
  websocketEnabled?: 0 | 1;
  /** 邮件通知总开关 */
  emailNotificationEnabled?: 0 | 1;
  /** 关注邮件通知 */
  emailFollowEnabled?: 0 | 1;
  /** 评论邮件通知 */
  emailCommentEnabled?: 0 | 1;
  /** 回复邮件通知 */
  emailReplyEnabled?: 0 | 1;
  /** @提及邮件通知 */
  emailMentionEnabled?: 0 | 1;
  /** 系统邮件通知 */
  emailSystemEnabled?: 0 | 1;
}

/** 免打扰设置参数 */
export interface DoNotDisturbParams {
  /** 是否开启 0-关闭 1-开启 */
  enabled: 0 | 1;
  /** 开始时间 HH:mm:ss */
  startTime?: string;
  /** 结束时间 HH:mm:ss */
  endTime?: string;
}
